// components/stepper/stepper.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    min: {
      type: Number,
      value: 0,
    },
    max: {
      type: Number,
      value: 100,
    },
    num: {
      type: Number,
      value: 0,
      observer (newVal, oldVal, changePath) {
      }
    }
  },

  observers: {
    'num': function (num) {
      // 最大最小值判断
      var maxStatus = num >= this.properties.max ? 'disabled' : 'normal';
      var minStatus = num <= this.properties.min ? 'disabled' : 'normal';
      // 将数值与状态写回
      this.setData({
        maxStatus: maxStatus,
        minStatus: minStatus
      });
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    // 使用data数据对象设置样式名
    minStatus: 'disabled',
    maxStatus: 'normal'
  },

  /**
   * 组件的方法列表
   */
  methods: {
    /* 点击减号 */
    _bindMinus: function() {
      var num = this.properties.num;
      // 如果大于 最小值 时，才可以减
      if (num > this.properties.min) {
        num --;
        this.triggerEvent('onMinusTap');
      }
      // 最大最小值判断
      var maxStatus = num >= this.properties.max ? 'disabled' : 'normal';
      var minStatus = num <= this.properties.min ? 'disabled' : 'normal';
      // 将数值与状态写回
      this.setData({
        num: num,
        maxStatus: maxStatus,
        minStatus: minStatus
      });
    },

    /* 点击加号 */
    _bindPlus: function() {
      var num = this.properties.num;
      // 如果小于 最大值 时，才可以增
      if (num < this.properties.max) {
        num ++;
        this.triggerEvent('onPlusTap');
      }
      // 最大最小值判断
      var maxStatus = num >= this.properties.max ? 'disabled' : 'normal';
      var minStatus = num <= this.properties.min ? 'disabled' : 'normal';
      // 将数值与状态写回
      this.setData({
        num: num,
        maxStatus: maxStatus,
        minStatus: minStatus
      });
    },

    /* 输入框事件 */
    bindManual: function(e) {
      var num = e.detail.value;
      // 将数值与状态写回
      this.setData({
        num: num
      });
    }
  },

  lifetimes: {
    ready() {
      var num = this.properties.num;
      // 最大最小值判断
      var maxStatus = num >= this.properties.max ? 'disabled' : 'normal';
      var minStatus = num <= this.properties.min ? 'disabled' : 'normal';
      // 将数值与状态写回
      this.setData({
        num: num,
        maxStatus: maxStatus,
        minStatus: minStatus
      });
    }
  }

})
